package com.zqxq.lottery.service.order;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.zqxq.common.constant.Result;
import com.zqxq.lottery.entity.bo.order.UserOrderBO;
import com.zqxq.lottery.entity.po.order.UserOrderPO;
import com.zqxq.lottery.entity.vo.order.UserOrderVO;
import com.zqxq.lottery.entity.vo.user.UserPrizeVO;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;


public interface IUserOrderService extends IService<UserOrderPO>{

    Page queryPage(UserOrderBO search) throws Exception;

    Page queryPageApp(UserOrderBO search) throws Exception;

    Result queryDJPageApp(UserOrderBO search) throws Exception;

    UserOrderVO get(Long id) throws Exception;

    UserOrderVO getH5(Long id) throws Exception;

    UserOrderVO save(UserOrderVO vo) throws Exception;

    UserOrderPO updateCancel(String id,String status) throws Exception;

    /**
     * 说    明：   新增订单
     * 创 建 人：	一刀·胡
     * 创建时间：	2018/3/23 9:59
     * 修 改 人：
     * 修改日期：
     **/
    UserOrderVO insertOrder(UserOrderVO vo) throws Exception;

    Result insertOrderAndPay(UserOrderVO vo) throws Exception;

    /**
     * 说    明：   保存订单出票图片信息
     * 创 建 人：	一刀·胡
     * 创建时间：	2018/3/28 19:59
     * 修 改 人：
     * 修改日期：
     **/
    void saveOrderTickets(String orderId, String ticketUrls) throws Exception;

    /**
     * 说    明：   竞猜中奖计算
     * 创 建 人：	一刀·胡
     * 创建时间：	2018/3/28 20:00
     * 修 改 人：
     * 修改日期：
     **/
    void updateCalcLottery(Long lotteryId) throws Exception;


    boolean updateOrderCancel(UserOrderPO order);


    boolean updateOrderBackMoney(String orderId, BigDecimal backMoney);

    boolean backMoneyToBalance(String orderId, BigDecimal backMoney);

    boolean backMoneyCancelOrder(String orderId);

    void winUserOrder(String orderId, BigDecimal rewards, BigDecimal afterTaxs);

    /**
    * @Author 苦智
    * @Description 用户中奖列表
    * @Date 18:20 2018/5/7
    * @Param [userId]
    * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
    **/
    List<UserPrizeVO> queryPrizeList(Long userId);

    Map<String,Object> selectPrizeInfo();

    UserOrderVO insertFollowOrder(Long userId,UserOrderVO order,Integer betTimes);

    Integer getUserTodayPushOrder(Long userId);

    List<UserOrderVO> getUserTwoDayPushOrder(Long userId);

    String getSP(Long orderId);
}
